package com.pureut.storage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.WipCompletion;
import com.pureut.storage.dto.PickingRestDbDto;
import com.pureut.storage.dto.WipCompletionDto;
import com.pureut.storage.dto.WipCompletionViewDto;
import com.pureut.storage.export.WipCompletionExport;
import com.pureut.storage.vo.PickingRestDbVo;
import com.pureut.storage.vo.UpdateStatusByQualityVo;
import com.pureut.storage.vo.WipCompletionVo;
import com.pureut.storage.vo.WipOtherAddVo;
import com.pureut.system.api.vo.ReturnStatusVo;

import java.util.List;

/***
 *
 * Author:C
 * Date:2022/12/30 11:54
 * @DESC
 */
public interface WipCompletionService extends IService<WipCompletion> {

    /**
     * 完工入库列表
     */
    List<WipCompletionDto> getReceiptList(WipCompletionVo wipCompletionVo);

    /**
     * 新增
     */
    boolean addWipCompletion(WipCompletionVo wipCompletionVo) throws Exception;

    /**
     * 关结
     */
    boolean close(WipCompletionVo wipCompletionVo);

    /**
     * 查看
     */
    WipCompletionDto getView(Long id);

    /**
     * 修改
     */
    boolean updateWipCompletion(WipCompletionVo wipCompletionVo);

    /**
     * 删除
     */
    boolean deleteWipCompletion(String idStr);

    /**
     * 导出
     */
    List<WipCompletionExport> getInfoExport(WipCompletionVo wipCompletionVo);

    /**
     * 完工入库pda（自动生成）
     */
    PickingRestDbDto wipCompletionPda(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 完工入库pda(手动生成)
     */
    PickingRestDbDto manualWipCompletionPda(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 完工入库拣货撤销
     */
    boolean pickingCancellation(PickingRestDbVo pickingRestDbVo);

    /**
     * 完工入库拣货完成
     */
    boolean pickingCompleted(PickingRestDbVo pickingRestDbVo) throws Exception;

    /**
     * 新增完工入库（其他模块调用）
     */
    boolean wipOtherAdd(WipOtherAddVo wipOtherAddVo) throws Exception;

    /**
     * 完工入库品质回传状态(fegin调用)
     */
    boolean updateStatusByQuality(UpdateStatusByQualityVo updateStatusByQualityVo);

    /**
     * 完工入库品质回传状态(品质处理fegin调用)
     */
    boolean wipCompletionQualityStatus(ReturnStatusVo returnStatusVo);
}
